﻿using IQReportes.Models;
using IQReportes.Models.Logica;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace IQReportes.ViewModels
{
    /// <summary>
    /// Información de botones de fecha de vista de transacciones
    /// </summary>
    public class BotonesFechaViewModel
    {
        /// <summary>
        /// fecha inicial
        /// </summary>
        public string fechaInicio;
        /// <summary>
        /// fecha final
        /// </summary>
        public string fechaFin;
        /// <summary>
        /// id
        /// </summary>
        public int id;
        /// <summary>
        /// nombre a mostrar en vista
        /// </summary>
        public string nombre;
        /// <summary>
        /// valor entero
        /// </summary>
        public int valor;

        /// <summary>
        /// Constructor con parámetros
        /// </summary>
        /// <param name="fechaInicio">fecha inicio</param>
        /// <param name="fechaFin">fecha fin</param>
        /// <param name="id">id</param>
        /// <param name="nombre">nombre a mostrar</param>
        /// <param name="valor">valor entero</param>
        public BotonesFechaViewModel(string fechaInicio, string fechaFin, int id,string nombre,int valor)
        {
            this.fechaInicio = fechaInicio;
            this.fechaFin = fechaFin;
            this.id = id;
            this.nombre = nombre;
            this.valor = valor;
        }
        /// <summary>
        /// Constructor con parámetros
        /// </summary>
        /// <param name="botonFecha">BotonesFecha</param>
        public BotonesFechaViewModel(BotonesFecha botonFecha)
        {
            this.id = botonFecha.idBotonesFecha;
            this.valor = botonFecha.inValor;
            this.nombre = botonFecha.vcNombre;
            this.fechaFin = (new LogicaParametro()).getFechaFinalStringTx();
            int restarDias = (new LogicaParametro()).getDiasInicialTx();
            int restarMeses = botonFecha.inMes*-1;
            int restarAnhos = botonFecha.inAnho*-1;
            restarDias += botonFecha.inDia;
            DateTime fecha = DateTime.Now;
            
            if ( botonFecha.inMes > 1 || botonFecha.inAnho > 0 || botonFecha.inAnho==-1){
                restarDias = DateTime.Now.Day - 1;
            }
            restarDias *= -1;
            if (botonFecha.inAnho == -1)
            {
                this.fechaInicio = (new LogicaParametro()).getFechaInicialTodo();
            }
            else{
                fecha = fecha.AddDays(restarDias);
                fecha = fecha.AddMonths(restarMeses);
                if (botonFecha.inMes == 1)
                {
                    restarDias = fecha.DayOfWeek - DayOfWeek.Sunday;
                }
                
                fecha = fecha.AddYears(restarAnhos);
                
                this.fechaInicio = String.Format("{0:dd/MM/yyyy}", fecha);
            }
        }
    }
}